package com.zingrow.web.user.service;

import java.util.List;


import com.zingrow.common.utils.PageView;
import com.zingrow.web.user.model.User;
import com.zingrow.web.user.model.UserPermission;

/**
 * 用户管理,包括用户登录，维护等功能
 * 
 * @author sy
 *
 */
public interface IUserService {
	/**
	 * 用户登录
	 * 
	 * @param account
	 * @param password
	 * @return 登陆成功返回该用户实体对象
	 */
	User checkUserLogin(String account, String password);
	
	/**
	 * 登录验证,根据名字
	 */
	User checkUserName(String account);
	
	/*
	 * 根据用户名查询用户id
	 * */
	Integer selectByUserAccount(String user);

	/**
	 * 根据参数查询用户
	 * 
	 * @param pageView
	 * @param account
	 * @param userType
	 * @return
	 */
	List<User> queryByParams(PageView pageView, String account, Integer userType,String group,String name,String phone,String mailbox);
	
	/**
	 * 根据参数查询    只查询超级管理员和普通管理用户
	 * @param pageView
	 * @param account
	 * @return
	 */
	List<User> queryParams(PageView pageView, String account);
	/**
	 * 根据主键修改账户信息
	 * 
	 * @param user
	 * @return 修改结果bool值
	 */
	boolean updateByPrimaryKey(User user);

	/**
	 * 同名账号查询
	 * 
	 * @param account
	 * @param userId
	 *            为null时仅根据用户名判断。不为null会检测是否存在除此ID外其他同名(修改时检测)
	 * @param userType
	 *            为2时仅根据客户用户名判断。
	 * @return
	 */
	boolean querySameByUserName(String account, Integer userId, Integer userType);
	
	/**
	 * 同用户名查询
	 * 
	 * @param account
	 * @param userId
	 *            为null时仅根据用户名判断。不为null会检测是否存在除此ID外其他同名(修改时检测)
	 * @param userType
	 *            为2时仅根据客户用户名判断。
	 * @return
	 */
	boolean querySameByUserNameone(String name, Integer userId, Integer userType);

	/**
	 * 同电话查询
	 * 
	 * @param account
	 * @param userId
	 *            为null时仅根据用户名判断。不为null会检测是否存在除此ID外其他同名(修改时检测)
	 * @param userType
	 *            为2时仅根据客户用户名判断。
	 * @return
	 */
	boolean querySameByUserPhone(String phone, Integer userId, Integer userType);
	
	/**
	 * 同邮箱查询
	 * 
	 * @param account
	 * @param userId
	 *            为null时仅根据用户名判断。不为null会检测是否存在除此ID外其他同名(修改时检测)
	 * @param userType
	 *            为2时仅根据客户用户名判断。
	 * @return
	 */
	boolean querySameByUserMailbox(String mailbox, Integer userId, Integer userType);
    /*
     * 新增普通管理员用户
     * */
	
	boolean addAdminUser(User user);
	
	/*
     * 修改普通管理员用户
     * */
	boolean updateUserNameAndKey(User user);
	/**
	 * 新增一条用户信息
	 * 
	 * @param user
	 * @return
	 */
	
	boolean addUser(User user);

	/**
	 * 删除一个帐号信息(仅仅改变is_delete)
	 * 
	 * @param userId
	 * @return
	 */
	boolean deleteUser(Integer userId);
	
	/**
	 * 根据用户ID修改权限
	 */
	boolean updateByUserIDPro(Integer userId,String ropePro,String permission);
	
	/**
	 * 查询一个帐号信息
	 * 
	 * @param userId
	 * @return
	 */
	User queryByUserId(Integer userId);
	
	/**
	 * 根据用户ID修改权限
	 */
	UserPermission selectByUserPer(Integer userId);
	
	/**
	 * 根据方案id查询用户名称
	 * @param ids
	 * @return
	 */
	List<User> selectidName(String ropeProgramme);
	
	User queryGroupByUserName(String userAccount);
	
	User selectName(String userAccount);
	
	UserPermission selectByUserId(Integer userId);
	/**
	 * 根据组织id查询用户集合
	 * @param groupId
	 * @return
	 */
	List<User> selectId(Integer groupId);
	
	boolean updateifmId(String ropeProgramme1,Integer userId);
	
	List<UserPermission> selectuIdifmId(Integer groupId);
	
	int selectByGroupId(Integer groupId);
	
	User querybyuserid(Integer userId);
	

	
}
